home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / MEDICAL / 2608A.ZIP / GP.ZIP / PRINTDEM.SRC < prev    next >
Text File  |  1990-11-03  |  18KB  |  946 lines

  1. ;\|
  2. ;NW       10:51:46 AM  15/12/89   |
  3. ;THIS PROGRAM ENABLES RP'S AND LABELS TO PRINTED AT THE SAME TIME.
  4. ;THIS WILL ONLY OCCUR IF THE PATIENT IS ENTERED A DISPENSING=Y
  5. ;FOR THIS TO OPERATE CORRECTLY YOU REQUIRE A PRINTER SOFT-SWITCH DEVICE.
  6. ;IN TASINSTL PRINTER CONTROL CODES 10,11,12 ARE USED TO SWITCH PRINTERS.
  7. ;11 = PRESCRIPTIONS    12 = LABELS  (USING 10 AS DUAL CODE)
  8. FIELDS:
  9.     define(S1|A|1||)
  10.     define(PN27|A|27||)
  11.     define(AD22|A|22||)
  12.     define(RESTRICT1|A|25||)
  13.     define(RESTRICT2|A|35||)
  14.     define(S1PRNT|A|1||)
  15.     define(S10|A|10||)
  16.     define(N2|N|2|0|)
  17.     define(MINUS|N|1||)
  18.     define(TIT|A|4||)
  19.     define(N3|N|3|0|)
  20.     define(N5|N|5|0|)
  21.     define(B8|A|8||)
  22.     define(N5.2|N|5|2|)
  23.     define(A5|A|5||)
  24.     define(A8|A|8||)
  25.     define(A30|A|30||)
  26.     define(B30|A|30||)
  27.     define(C30|A|30||)
  28.     define(D1|A|1||)
  29.     define(AGE|N|5|2|)
  30.     define(TD|S|8||)
  31.     define(DATERP|S|8||)
  32.     define(TDND|S|8||)
  33.     define(DATEX|S|8||)
  34.     define(REC.NUM|N|8|0|)
  35.     define(MEM.PAT.NAME|A|27||)
  36.     define(DAY|N|1|0|)
  37.     define(DOCTORRP|A|30||)
  38.     define(P2|N|2|0|)
  39.     define(PUNC2A|N|2|0|)
  40.     define(PATIENT1A|A|30||)
  41.     define(PUNC1|N|2|0|)
  42.     define(TM|A|27||16)
  43.     define(N.2.0.P|N|2|0|)
  44.     define(P.2.0.1|N|2|0|)
  45.     define(P.2.0.2|N|2|0|)
  46.     define(P.2.0.3|N|2|0|)
  47.     define(PATIENT1|A|30||)
  48.     define(PATIENT2|A|30||)
  49.     define(X1|A|1||)
  50.     define(CHOICE|N|2|0|)
  51.     define(YES.NO|A|1||)
  52.     define(A78|A|80||)
  53.     define(PCTR|N|2|0|)
  54.     define(AB|A|5||)
  55.     define(LETTER|A|6||)
  56.     define(NY|A|1||)
  57.     define(MEDCTR|N|1|0|)
  58.     define(PATCTR|N|4|0|)
  59.     define(Z30|A|30||)
  60.     define(P2X|N|1||)
  61.     define(RPCTR|N|4||)
  62.     define(CODEX1|S|8||)
  63.     define(CODEX2|S|8||)
  64.     define(CODEX3|S|8||)
  65.     date(TD|G)
  66.     open(GPSETUP||0|EXIT)
  67.     find(B|HEADING|EXIT)
  68. NEWPRINT:
  69.     open(PATIENT||1|EXIT)
  70.     open(RP||1|EXIT)
  71.     open(ABBREV||1|EXIT)
  72.     open(RPABBREV||1|EXIT)
  73. TDM:
  74.     clrlne(1|25)
  75.     clrlne(1|24)
  76.     trap(I|I)
  77.     gosub CLEARALL
  78.     gosub FIELDCLR
  79.     gosub TRAPS
  80.     mount(RP|S)
  81.     trap(U|I)
  82.     trap(W|I)
  83.     YES.NO = ("")
  84.     pmsg(@H;"DO YOU WANT A TEST PRESCRIPTION PRINT?"|1|25|N|Y|S|)
  85.     enter(YES.NO|"YN"|||Y|Y|N|40|25|N)
  86.     clrlne(1|25)
  87.     if YES.NO = ("N") goto MESS
  88.     pmsg(@H;"ALIGN PAPER THEN PRESS ANY KEY TO PRINT DUMMY SCRIPT"|1|25|Y|N|S|)
  89.     clrlne(1|25)
  90.     gosub MOUNTRP
  91.     trap(I|S|PRINTSTOP)
  92.     PATIENT.NAME = ("THIS SHOULD BE AT NAME")
  93.     A30 = ("THIS SHOULD BE ON END LINE")
  94.     pblnk(1)
  95.     pfmt(1|||N|N|)
  96.     pvert(40)
  97.     pblnk(1)
  98.     pfmt(7|||N|N|)
  99.     mount(RP|S)
  100.     trap(I|I)
  101.     pmsg(@H;"PRINT ANOTHER TEST PRESCRIPTION? Y/N"|1|25|N|N|S|)
  102.     enter(YES.NO|"YN"|||Y|Y|N|40|25|N)
  103.     clrlne(1|25)
  104.     if YES.NO = ("N") goto MESS
  105.     goto TDM
  106. MESS:
  107.     clrlne(1|25)
  108.     gosub TRAPS
  109.     gosub CLEARALL
  110. PRINTRPS:
  111.     trap(Q|G|RP.EXIT)
  112.     trap(C|I)
  113.     trap(1|G|PRINT.DEM)
  114. PRINTRP:
  115. PAT.NAMEX:
  116.     mount(RP|S)
  117.     clrlne(1|25)
  118.     gosub CLEARALL
  119.     gosub FIELDCLR
  120. PAT.NAMEX2:
  121.     trap(Q|G|RP.EXIT)
  122.     trap(F|D)
  123.     trap(N|D)
  124.     trap(L|G|DEMLOCK)
  125.     trap(M|D)
  126.     trap(R|D)
  127.     pmsg("<End>key to print demands"|50|24|N|N|S|)
  128.     find(B|RECORD.NUMBER|EXIT)
  129.     clr(PATIENT|B)
  130.     clr(RP|B)
  131.     enter(PATIENT.NAME|||PAT.NAMEX|Y|Y|N|||N)
  132.     clrlne(50|24)
  133.     find(G|PATIENT.NAME|PAT.NAMEX2)
  134.     gosub STATUS
  135.     RP.REF = (RECORD.NUMBER)
  136.     find(M|RP.REF|PAT.NAMEX2)
  137.     if RP.REF <> (RECORD.NUMBER) goto PAT.NAMEX2
  138.     saves(1)
  139.     trap(Q|I)
  140.     trap(R|I)
  141.     trap(N|I)
  142.     trap(M|I)
  143.     rev
  144.     window(1|24|2|30)
  145.     pmsg("THIS PATIENT? Y/N:"|1|1|N|N|S|)
  146.     PRINTP = ("Y")
  147.     enter(PRINTP|"YN"|||Y|Y|N|20|1|N)
  148.     frg
  149.     redsp(1)
  150.     trap(Q|G|RP.EXIT)
  151.     if PRINTP <> ("Y") goto PAT.NAMEX2
  152.     save(PATIENT|N|N|PAT.NAMEX)
  153.     find(M|RECORD.NUMBER||)
  154. RECNUM:
  155.     RP.REF = (RECORD.NUMBER)
  156.     find(M|RP.REF|DEL.PRINTP)
  157.     if AUTO.ON.DEMAND = ("A") goto NEXTRP
  158.     RECORD.NUMBER = (RP.REF)
  159.     find(M|RECORD.NUMBER|PAT.NAMEX)
  160. INCLUDE?:
  161.     saves(1)
  162.     trap(Q|I)
  163.     rev
  164.     window(1|24|2|30)
  165.     pmsg("INCLUDE THIS RP Y/N?"|1|1|N|N|S|)
  166.     PRINTR = ("Y")
  167.     enter(PRINTR|"YN"|||Y|Y|N|23|1|N)
  168.     frg
  169.     redsp(1)
  170.     trap(Q|G|RP.EXIT)
  171.     if CONTROL = ("N") goto CONTROL1
  172.     if ISS.RESTRICT = ("Y") do
  173.         {
  174.         if RP.NEXT.DUE > (TD+3) do
  175.             {
  176.             gosub RESTSCR
  177.             goto NEXTRP
  178.             }
  179.         }
  180. CONTROL1:
  181.     if PRINTR <> ("Y") goto NEXTRP
  182.     save(RP|N|N|PAT.NAMEX2)
  183. NEXTRP:
  184.     find(N|RP|PAT.NAMEX2)
  185.     if RP.REF <> (RECORD.NUMBER) goto PAT.NAMEX2
  186.     if AUTO.ON.DEMAND = ("A") goto NEXTRP
  187.     goto INCLUDE?
  188. ;PRINT ON DEMAND RPS AND CLEAR THE FLAGS|
  189. PRINT.DEM:
  190.     saves(1)
  191.     trap(Q|I)
  192.     rev
  193.     window(1|24|2|45)
  194.     D1 = ("N")
  195.     pmsg("OWN DOCTOR <Y> OR DR. OF DAY SIGNING <N>:"|1|1|N|N|S|)
  196.     enter(D1|"YN"|||Y|Y|N|43|1|N)
  197.     frg
  198.     redsp(1)
  199.     trap(Q|G|RP.EXIT)
  200.     trap(I|S|PRINTSTOP)
  201.     trap(L|S|RECLOCK)
  202.     gosub MOUNTRP
  203.     N2 = (0)
  204.     S1 = ("1")
  205.     S1PRNT = ("D")
  206.     P2 = (0)
  207.     PRINTP = ("Y")
  208.     find(M|PRINTP|PAT.NAMEX)
  209. PRINFIND:
  210.     RP.REF = (RECORD.NUMBER)
  211.     find(M|RP.REF|NEXTPRINP)
  212.     if PRINTR <> ("Y") goto FINDNEXTR
  213.     gosub PRINT
  214. NEXTPRINR:
  215.     RP.REF = (RECORD.NUMBER)
  216. FINDNEXTR:
  217.     find(N|RP|ENDPRINT?)
  218.     if RP.REF <> (RECORD.NUMBER) goto ENDPRINT?
  219.     if PRINTR <> ("Y") goto FINDNEXTR
  220.     S1 = (1)
  221.     gosub PRINT
  222.     goto NEXTPRINR
  223. NEXTPRINP:
  224.     PRINTP = (" ")
  225.     save(PATIENT|N|N|PAT.NAMEX)
  226.     find(M|RECORD.NUMBER||)
  227.     PRINTP = ("Y")
  228.     find(M|PRINTP|XPRINT)
  229.     if PRINTP <> ("Y") goto XPRINT
  230.     N2 = (0)
  231.     P2 = (0)
  232.     S1 = ("1")
  233.     S1PRNT = ("D")
  234.     goto PRINFIND
  235. PRINT:
  236.     trap(I|S|PRINTSTOP)
  237.     clr(GPSETUP|B)
  238.     find(B|HEADING|EXIT)
  239.     if N2 = (0) gosub SHEADING
  240.     DATERP = (RP.NEXT.DUE+RP.DAYS.SUPPLY)
  241.     RESTRICT1 = ("")
  242.     RESTRICT2 = ("NEXT DUE:")
  243.     pblnk(1)
  244.     just(RESTRICT2|R)
  245.     if CONTROL = ("N") goto ELSE
  246.     if RESTRICT.NO > (2) goto ELSE
  247.     if ISS.RESTRICT = ("Y") do
  248.         {
  249.         A30 = (MEDICATION)
  250.         just(A30|R)
  251.         S10 = (QUANTITY)
  252.         just(S10|R)
  253.         if RESTRICT.NO = (2) do
  254.             {
  255.             RESTRICT1 = (":ONLY ONE MORE RPT IS")
  256.             RESTRICT2 = ("ALLOWED.PLEASE SEE YOUR DR BEFORE:")
  257.             trim(RESTRICT1|T)
  258.             trim(RESTRICT2|T)
  259.             pfmt(7|||N|N|)
  260.             pfmt(8|||N|N|)
  261.             pfmt(9|||N|N|)
  262.             goto ELSEX
  263.             }
  264.         if RESTRICT.NO = (1) do
  265.             {
  266.             RESTRICT1 = (":THIS IS THE LAST ISSUE.")
  267.             RESTRICT2 = ("YOU MUST SEE YOUR DR BEFORE:")
  268.             trim(RESTRICT1|T)
  269.             trim(RESTRICT2|T)
  270.             pfmt(7|||N|N|)
  271.             pfmt(8|||N|N|)
  272.             pfmt(9|||N|N|)
  273.             goto ELSEX
  274.             }
  275.         if RESTRICT.NO <= (0) do
  276.             {
  277.             MINUS = (MINUS+1)
  278.             RESTRICT1 = (" RESTRICTION REACHED!")
  279.             RESTRICT2 = ("INFORM DOCTOR IMMEDIATELY")
  280.             just(A30|R)
  281.             pfmt(28|||N|N|)
  282.             pfmt(29|||N|N|)
  283.             pblnk(1)
  284.             goto ELSEX
  285.             }
  286.         }
  287.     else
  288.         {
  289.         goto ELSE
  290.         }
  291. ELSE:
  292.     A30 = (MEDICATION)
  293.     S10 = (QUANTITY)
  294.     pfmt(7|||N|N|)
  295.     pfmt(8|||N|N|)
  296.     pfmt(9|||N|N|)
  297. ELSEX:
  298.     N2 = (N2+1)
  299.     gosub UPDT.LIST
  300.     if N2 = (5) gosub ENDPRINT
  301.     ret
  302. ENDPRINT:
  303.     P2X = (N2-MINUS)
  304.     MINUS = (0)
  305. LOOPER:
  306.     if N2 <> (5) do
  307.         {
  308.         pfmt(30|||N|N|)
  309.         pblnk(3)
  310.         N2 = (N2+1)
  311.         goto LOOPER
  312.         }
  313.     pvert(31)
  314.     if S1 = ("0") do
  315.         {
  316.         pfmt(14|||N|N|)
  317.         }
  318.     else
  319.         {
  320.         pfmt(15|||N|N|)
  321.         }
  322.     pblnk(2)
  323. 60:
  324.     if S1PRNT = ("A") do
  325.         {
  326.         pfmt(17|||N|N|)
  327.         if D1 = ("Y") do
  328.             {
  329.             DAY = (DOCTOR)
  330.             RPDOCTOR = (RPDOCTOR[DAY])
  331.             DOCTORRP = (RPDOCTOR)
  332.             pfmt(19|||N|N|)
  333.             }
  334.         else
  335.             {
  336.             DAY =day(TDND)
  337.             RPDOCTOR = (RPDOCTOR[DAY])
  338.             DOCTORRP = (RPDOCTOR)
  339.             pfmt(19|||N|N|)
  340.             }
  341.         }
  342.     else
  343.         {
  344.         pfmt(18|||N|N|)
  345.         if D1 = ("Y") do
  346.             {
  347.             DAY = (DOCTOR)
  348.             RPDOCTOR = (RPDOCTOR[DAY])
  349.             DOCTORRP = (RPDOCTOR)
  350.             pfmt(20|||N|N|)
  351.             }
  352.         else
  353.             {
  354.             DAY =day(TD)
  355.             RPDOCTOR = (RPDOCTOR[DAY])
  356.             DOCTORRP = (RPDOCTOR)
  357.             pfmt(20|||N|N|)
  358.             }
  359.         }
  360.     pfmt(21|||N|N|)
  361.     pfmt(22|||N|N|)
  362. TESTDISP:
  363.     if DISPENSING = ("Y") do
  364.         {
  365.         pfmt(27|||N|N|)
  366.         }
  367. EJECT:
  368.     pvert(41)
  369.     pblnk(1)
  370.     RPCTR = (RPCTR+1)
  371.     pmsg("Number of RP's printed=";RPCTR|1|24|N|N|S|)
  372.     PUNC2A = (0)
  373.     B8 = ("A")
  374.     N2 = (0)
  375.     S1 = ("0")
  376. RETURN:
  377.     ret
  378. UPDT.LIST:
  379.     RP.NEXT.DUE = (RP.NEXT.DUE+RP.DAYS.SUPPLY)
  380.     ISSUE.NO = (ISSUE.NO+1)
  381.     if CONTROL = ("N") goto CONTROL2
  382.     if ISS.RESTRICT <> ("Y") do
  383.         {
  384.         RESTRICT.NO = (0)
  385.         }
  386.     else
  387.         {
  388.         RESTRICT.NO = (HOW.MANY.ISSUES-ISSUE.NO)
  389.         }
  390. CONTROL2:
  391.     ISSUE.1 = (TDND)
  392.     if S1PRNT = ("D") do
  393.         {
  394.         ISSUE.1 = (TD)
  395.         RP.NEXT.DUE = (TD+RP.DAYS.SUPPLY)
  396.         }
  397. SAVERPX:
  398.     if S1PRNT = ("A") do
  399.         {
  400.         DATERP = (RP.NEXT.DUE)
  401.         }
  402.     else
  403.         {
  404.         if DISPENSING = ("Y") do
  405.             {
  406.             PRINTR = ("L")
  407.             }
  408.         else
  409.             {
  410.             PRINTR = ("")
  411.             }
  412.         }
  413.     save(RP|N|Y|)
  414.     ret
  415. SEXIST:
  416.     TIT = ("")
  417.     if SEX = ("M") then TIT = ("Mr.")
  418.     if SEX = ("F") do
  419.         {
  420.         if MARITAL.STATUS = ("M") do
  421.             {
  422.             TIT = ("Mrs.")
  423.             }
  424.         else
  425.             {
  426.             TIT = ("Ms.")
  427.             }
  428.         }
  429.     if SEX = ("") then TIT = ("Ms.")
  430.     trim(TIT|T)
  431.     ret
  432. SHEADING:
  433.     pblnk(1)
  434.     gosub SEXIST
  435.     pfmt(1|||N|N|)
  436. LINE2:
  437.     P2 = (0)
  438.     pblnk(3)
  439.     pfmt(4|||N|N|)
  440.     pblnk(1)
  441.     pfmt(6|||N|N|)
  442.     pblnk(2)
  443.     ret
  444. ENDPRINT?:
  445.     if N2 <> (0) gosub ENDPRINT
  446.     if S1PRNT = ("A") do
  447.         {
  448.         if CONTROL = ("N") goto CONTROL3
  449.         gosub RESTDEL
  450.         trap(I|I)
  451.         goto NEWPRINT
  452.         }
  453.     goto NEXTPRINP
  454. CONTROL3:
  455.     trap(I|I)
  456.     goto NEWPRINT
  457. MOUNTRP:
  458.     mount(AUTORP|R|P)
  459.     pchr(P|10)
  460.     pchr(P|11)
  461.     pchr(P|4)
  462.     pchr(P|1)
  463.     pset(132|42|42)
  464.     ret
  465. TRAPS:
  466.     trap(I|D)
  467.     trap(Q|G|EXIT)
  468.     trap(3|I)
  469.     trap(7|S|HOME)
  470.     trap(9|S|PGUP)
  471.     trap(S|I)
  472.     trap(D|I)
  473.     trap(R|I)
  474.     trap(F|I)
  475.     trap(N|I)
  476.     trap(M|I)
  477.     trap(J|I)
  478.     trap(U|D)
  479.     trap(W|D)
  480.     trap(1|I)
  481.     trap(L|S|RECLOCK)
  482.     ret
  483. CLEARALL:
  484.     clr(PATIENT|B)
  485.     clr(RP|B)
  486.     ret
  487. ;MOUNT REPORT RPLABELS|
  488. RPLABSCR:
  489.     mount(RPLABELS|R|P)
  490.     pchr(P|10)
  491.     pchr(P|12)
  492.     pchr(P|4)
  493.     pchr(P|1)
  494.     pset(79|13|13)
  495.     ret
  496. EJECTION:
  497.     ptof
  498.     ret
  499. ;LABEL PRINTING ROUTINES FOR DEMANDS AND DISPENSING|
  500. PRINTPX:
  501.     trap(I|S|PRINTSTOP)
  502.     gosub SEXIST
  503.     gosub NEWX
  504.     if X1 = ("X") do
  505.         {
  506.         TDND = (TD)
  507.         }
  508.     else
  509.         {
  510.         TDND = (RP.NEXT.DUE)
  511.         }
  512.     S10 = (QUANTITY)
  513.     C30 = (DIRECTIONS)
  514.     A30 = (MEDICATION)
  515.     just(Z30|C)
  516.     just(LABELS|C)
  517.     just(S10|C)
  518.     just(C30|C)
  519.     just(A30|C)
  520.     just(DOSE|L)
  521.     pfmt(1|||N|N|)
  522.     pfmt(4|||N|N|)
  523.     pfmt(5|||N|N|)
  524.     pfmt(6|||N|N|)
  525.     pfmt(7|||N|N|)
  526.     pfmt(8|||N|N|)
  527.     pfmt(9|||N|N|)
  528.     pfmt(10|||N|N|)
  529.     pfmt(11|||N|N|)
  530.     pblnk(4)
  531.     trap(I|I)
  532.     ret
  533. NEWX:
  534.     NY = (" ")
  535.     PATIENT1A = (PATIENT.NAME)
  536.     trim(PATIENT1A|T)
  537.     PUNC1 =loc(","|PATIENT1A|1||27)
  538.     N.2.0.P =siz(A|PATIENT.NAME)
  539.     P.2.0.1 = (PUNC1-1)
  540.     PATIENT2 =mid(PATIENT.NAME|1|P.2.0.1|)
  541.     P.2.0.2 = (PUNC1+2)
  542.     P.2.0.3 = (N.2.0.P-P.2.0.2+1)
  543.     PATIENT1 =mid(PATIENT1A|P.2.0.2|P.2.0.3|)
  544.     trim(PATIENT1|T)
  545.     trim(PATIENT2|T)
  546.     Z30 = (TIT+PATIENT1+NY+PATIENT2)
  547.     ret
  548. ;DEMAND LABEL PRINTING USING RPLABELS|
  549. XPRINT:
  550.     clrlne(1|24)
  551.     PRINTP = (" ")
  552.     ifdup(PATIENT.NAME|G|X1E)
  553.     save(PATIENT|N|Y|X1E)
  554. X1E:
  555.     gosub CLEARALL
  556.     gosub FIELDCLR
  557.     trap(I|I)
  558.     saves(2)
  559.     trap(Q|I)
  560.     rev
  561.     window(15|24|2|50)
  562.     pmsg("DO YOU WANT LABELS FOR THESE RP,S <Y>or<N>?:"|1|1|N|N|S|)
  563.     enter(YES.NO|"YN"|||Y|Y|N|45|1|N)
  564.     frg
  565.     redsp(2)
  566.     trap(Q|G|EXIT)
  567.     if YES.NO <> ("Y") goto MESSCON
  568.     X1 = ("X")
  569.     trap(L|S|RECLOCK)
  570.     gosub RPLABSCR
  571.     PRINTR = ("L")
  572.     find(M|PRINTR|MESSCON)
  573.     RECORD.NUMBER = (RP.REF)
  574.     find(M|RECORD.NUMBER|EXIT)
  575.     gosub PRINTPX
  576. XXXX:
  577.     PRINTR = (" ")
  578.     save(RP|N|N|)
  579.     PRINTR = ("L")
  580.     find(N|RP|MESSCON)
  581.     if PRINTR <> ("L") goto MESSCON
  582.     RECORD.NUMBER = (RP.REF)
  583.     find(M|RECORD.NUMBER|)
  584.     X1 = ("X")
  585.     gosub PRINTPX
  586.     goto XXXX
  587. MESSCON:
  588.     gosub RESTDEL
  589.     goto MESS
  590. MENU:
  591. RUN:
  592.     TM[1] = (" 1 - AGE-SEX  REGIST  01011")
  593.     TM[2] = (" 2 - PRINT DEMANDS    01022")
  594.     TM[3] = (" 3 - EXIT             01033")
  595.     TM[4] = (" 4 - PRINT AUTOS      01044")
  596.     menu(30|20|5|23|0|TM|CHOICE|4|22|RUN||"---RP PRINT DEMAND----"|N)
  597.     on(CHOICE|G|PATIENT;NEWPRINT;EXIT2|ALL)
  598. RP.EXIT:
  599.     gosub TRAPS
  600.     goto EXIT
  601. ALL:
  602.     run("PRINTALL")
  603. DEL.PRINTP:
  604.     RECORD.NUMBER = (RP.REF)
  605.     find(M|RECORD.NUMBER||)
  606.     PRINTP = ("")
  607.     save(PATIENT|N|Y|PAT.NAMEX2)
  608.     goto PAT.NAMEX2
  609. PRINTSTOP:
  610.     pon(S)
  611.     clrlne(1|25)
  612.     pmsg("CONTINUE(Y) OR EXIT (N)   (Y/N):"|1|12|N|N|S|)
  613.     enter(YES.NO|"YN"|||Y|Y|N|35|12|N)
  614.     if YES.NO <> ("Y") then run("RP")
  615.     pon(P)
  616.     ret
  617. RESTSCR:
  618.     trap(Q|I)
  619.     saves(9)
  620.     rev
  621.     window(20|15|3|45)
  622.     pmsg("THIS RP IS NOT DUE UNTIL:";RP.NEXT.DUE|1|1|N|N|S|)
  623.     pmsg("INFORM DOCTOR AS YOU CANT PRINT THIS YET."|1|2|Y|N||)
  624.     frg
  625.     redsp(9)
  626.     trap(Q|G|RP.EXIT)
  627.     ret
  628. RESTDEL:
  629.     mount(RP|S)
  630. RESTDELX:
  631.     RESTRICT.NO = (-1)
  632.     find(G|RESTRICT.NO|RESTRET)
  633.     if RESTRICT.NO > (-1) goto RESTRET
  634.     if ISS.RESTRICT <> ("Y") goto RESTNEXT
  635.     del(RP|Y|RESTNEXT)
  636.     goto RESTDELX
  637. RESTNEXT:
  638.     find(N|RP|RESTPREV)
  639.     if RESTRICT.NO > (-1) goto RESTPREV
  640.     if ISS.RESTRICT <> ("Y") goto RESTNEXT
  641.     del(RP|Y|RESTNEXT)
  642.     goto RESTDELX
  643. RESTPREV:
  644.     find(P|RP|RESTRET)
  645.     if RESTRICT.NO > (-1) goto RESTRET
  646.     if ISS.RESTRICT <> ("Y") goto RESTPREV
  647.     del(RP|Y|RESTPREV)
  648.     goto RESTPREV
  649. RESTRET:
  650.     ret
  651. HOME:
  652.     pchr(P|10)
  653.     pchr(P|12)
  654.     for(PCTR|1|13|1)
  655.         {
  656.         pchr(P|7)
  657.         }
  658.     ret
  659. PGUP:
  660.     pchr(P|10)
  661.     pchr(P|11)
  662.     for(PCTR|1|42|1)
  663.         {
  664.         pchr(P|7)
  665.         }
  666.     ret
  667. FIELDCLR:
  668.     S1 = ("")
  669.     MINUS = (0)
  670.     D1 = ("")
  671.     S1PRNT = ("")
  672.     S10 = ("")
  673.     N2 = (0)
  674.     N3 = (0)
  675.     N5 = (0)
  676.     N5.2 = (0)
  677.     A5 = ("")
  678.     A8 = ("")
  679.     A30 = ("")
  680.     B30 = ("")
  681.     C30 = ("")
  682.     AGE = (0)
  683.     DATERP = (0)
  684.     TDND = (0)
  685.     DATEX = (0)
  686.     REC.NUM = (0)
  687.     MEM.PAT.NAME = ("")
  688.     DAY = ("")
  689.     DOCTORRP = ("")
  690.     P2 = (0)
  691.     PUNC2A = (0)
  692.     B8 = ("")
  693.     YES.NO = ("")
  694.     PCTR = (0)
  695.     AB = ("")
  696.     LETTER = ("")
  697.     NY = ("")
  698.     MEDCTR = (0)
  699.     PATCTR = (0)
  700.     P2X = (0)
  701.     CODEX1 = (0)
  702.     CODEX2 = (0)
  703.     CODEX3 = (0)
  704.     ret
  705. LETCLR:
  706.     clr(PATIENT|B)
  707.     clr(RP|B)
  708.     ret
  709. PATIENT:
  710.     run("PATIENT")
  711. LETTRAP:
  712.     trap(U|I)
  713.     trap(W|I)
  714.     ret
  715. RUNRP:
  716.     run("recmenu")
  717. TRACE:
  718.     break
  719.     ret
  720. EXIT:
  721.     goto MENU
  722. EXIT2:
  723.     run("recmenu")
  724. PATLOCK:
  725.     pmsg("FILE PATIENT IN USE BY ANOTHER STATION CAN'T LOCK"|20|24|Y|N|S|)
  726.     clrlne(1|24)
  727.     run("recmenu")
  728. RPLOCK:
  729.     pmsg("FILE RP IN USE BY ANOTHER STATION - CAN'T LOCK"|20|24|Y|N|S|)
  730.     clrlne(1|24)
  731.     run("recmenu")
  732. RECLOCK:
  733.     saves(1)
  734.     pon(S)
  735.     pmsg("THIS RECORD IS LOCKED BY ANOTHER STATION - PRESS RET"|20|24|Y|N|S|)
  736.     clrlne(1|24)
  737.     redsp(1)
  738.     pon(P)
  739.     ret
  740. DEMLOCK:
  741.     pmsg("RECORD IN USE BY ANOTHER STATION - PRESS RETURN"|10|24|Y|N|S|)
  742.     clrlne(1|24)
  743.     clr(RP|B)
  744.     clr(PATIENT|B)
  745.     goto PAT.NAMEX2
  746. STATUS:
  747.     if PRINTP = ("") ret
  748.     if PRINTP => ("1") do
  749.         {
  750.         saves(1)
  751.         window(2|12|2|76)
  752.         pmsg("THERE IS A REGISTRATION PROBLEM WITH THIS PATIENT - CHECK : ";PRINTP|1|1|Y|N|S|)
  753.         redsp(1)
  754.         }
  755.     ret
  756. \STRP      
  757.  
  758.                    REPEAT PRESCRIBING - DEMAND PRINTING
  759.  ┌─────────────────────────────────────────────────────────────────────────────┐
  760.  │             PATIENT NAME:&                          <                       │
  761.  │ Address:&                         &                      D.O.B.:&           │
  762.  └─────────┬───────────────────────────────────────┬─────────────────┬─────────┘
  763.            │  Auto/on demand? A/D :&               │numb.issued:&    │
  764.            │     Restrictions? Y/N:&for:&   issues.│numb.to go :&    │
  765.            │         Starting.date:&               └─────────────────┤
  766.            │    Days between issue:&                                 │
  767.            │            Last.issue:&                                 │
  768.            │           RP.Next.Due:&                                 │
  769.            │          Medication @:&                             <   │
  770.            │               Warning:&                                 │
  771.            │              Strength:&                                 │
  772.            │                  Dose:&                                 │
  773.            │          Directions @:&                                 │
  774.            │          Qtity / Type:&   /&                            │
  775.            └─────────────────────────────────────────────────────────┘
  776.            F1 - HELP   @ - ABBREVIATION  F3 - CLEAR RP   CLEAR PATIENT
  777.            HOME - EJECT LABEL * PgUp - EJECT RP  *  END - PRINT DEMANDS
  778.  
  779.  
  780.  
  781. \
  782. PATIENT.NAME
  783. ADDRESS1
  784. AREA
  785. DATE.OF.BIRTH
  786. AUTO.ON.DEMAND
  787. ISSUE.NO
  788. ISS.RESTRICT
  789. HOW.MANY.ISSUES
  790. RESTRICT.NO
  791. RP.FIRST
  792. RP.DAYS.SUPPLY
  793. ISSUE.1
  794. RP.NEXT.DUE
  795. MEDICATION
  796. RPWARNING
  797. DOSE
  798. QUANTITY
  799. DIRECTIONS
  800. RP.DISP.QTY
  801. RP.WHAT.DISP
  802. \
  803. \R AUTORP  
  804.                                    &   &                                  :              &
  805.  
  806.  
  807.                                                   &                          Return all unused tablets to the chemist or Doctor.
  808.  
  809.                                                  &                           Always bring your Repeat Card with you,thankyou.
  810.                    &                              &                        &                             &
  811.                    &          &                                             &                                  &
  812.                                    (&  )&
  813.  
  814.  
  815.  
  816.  
  817.                                                  &
  818.                                                  &
  819.                                                  &
  820.                    &                                                          NEXT SCRIP READY TO COLLECT ON: &
  821.                    &                                                               THIS IS "ON DEMAND" ONLY.
  822.                    &
  823.                    &
  824.                    &
  825.           &        &
  826.           &        &
  827.  
  828.                                                                                SEE YOUR DOCTOR FOR A CHECK-UP,PLEASE
  829.  
  830.  
  831.                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                         &                              &
  832.                    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                                       &
  833.                    * * * * * & ITEM(S) * * * * * *
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850.  
  851.  
  852. \
  853. TIT
  854. PATIENT.NAME
  855. PATIENT.NAME
  856. ADDRESS1
  857. AREA
  858. A30
  859. DOSE
  860. A30
  861. RESTRICT1
  862. S10
  863. DIRECTIONS
  864. RESTRICT2
  865. DATERP
  866. RP.DISP.QTY
  867. RP.WHAT.DISP
  868. TDND
  869. TD
  870. TDND
  871. FPC
  872. DATERP
  873. FPC
  874. DOCTORRP
  875. DOCTORRP
  876. PRADDRESS
  877. P2X
  878. TOWN
  879. P2X
  880. TOWN
  881. A30
  882. RESTRICT1
  883. RESTRICT2
  884. P2X
  885. \
  886. \R RPLABELS
  887.       &
  888.  
  889.  
  890.                 &
  891.       &
  892.       ------------------------------
  893.       &
  894.       &           (&  )     &
  895.       &
  896.       &
  897.       Keep out of reach of children!
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935. \
  936. Z30
  937. S10
  938. C30
  939. A30
  940. DOSE
  941. RP.DISP.QTY
  942. TDND
  943. LABELS
  944. RPWARNING
  945. \
  946.